<?php
/**

Instructions pour la version ORM 5.3 - version DB prior

- Rien n'est précisé dans la classe, tout est dans la base de données
- Le nombre d'attributs est compté sur tous les attributs n'ayant pas _ devant leur nom
- Si on veut ignorer une propriété qui ne contient pas "_", il suffira de renseigner static $ATTRIBUTES_IGNORED
- Pour les relations, un tableau est à déclarer. Pour que la documentation PHP fonctionne, il est nécessaire de mettre le nom de la classe en tant que retour. Pour les relations multiple simple, ORMRelation peut être précisé
- Bien entendu, le attribute ignored ignorera les tableaux qui sont similaires mais non voulu
- Chaque relation devra renseigner:
* La classe utilisé (avec [] si il y a plusieurs lien possibles)
* L'attribut correspodant, s'il s'agit d'une relation simple. S'il n'est pas précisé, la relation est situé dans l'autre classe (multiple)
* La table correspondante, si relation multiple simple (+ nom des colonnes, si non générique)
* La classe correspodnante, s'il s'agit d'une relation multiple avec des propriétés sur la relation
- Pour cela, les propriétés sont pris directement de la base de données:
- Le type est celui auto déterminé par PDO, à l'encontre des dates
- Pour les dates, un format configurable en sortie pourra être précisé en option ou en constante
- Pour pouvoir formatté ensuite plus facilement, le timestamp est enregistré sous $t_attribut (possibilité de l'ajouter)
- La base de données est versionnée: au démarrage de l'ORM, les fichiers SQL d'un emplacement précis sont vérifiés. Il est possible de mettre n'importe quel nom unique
* Chaque fichier est executée puis enregistré en base de données (table 'db_version');
* 2 modes: le mode 'auto', qui fait les requêtes automatiquement, et le mode 'manual', qui lui ne fait aucune maj sans un appel explicite d'une méthode
* Une page sera crée pour que ce soit plus visuel
- Le schema est stocké en cache pour uen version précise (id de la table db_version)
- Il est possible de mettre à jour le schéma (forcé)
- Il est possible de créer des requêtes en utilisant @Class.$attribute pour avoir moins de problème si un nom change
- Chaque fichier de MAJ sql peut être accompagné d'un fichier .php, faisant des traitements
- L'ORM est déjà inclus dans ce fichier, il est donc possible de faire directement Database::getDB();


Relation:
- 0..1
- N..1
- N..N

Le but de cet ORM est de faire une partie objet simple, et une partie SQL.
Le SQL a toujorus été nécessaire, quel que soit le projet, pour stocker des données persistante. Ainsi, il est nécessaire d'avoir des compétences dans les 2 domaines
Il permet aussi de créer des relations simplement, et d'un schéma très simple

*/



abstract class A {
	
	
	static $RELATIONS = array(
		'manager' => array('User','manager'),
		'users' => 'User[]'
	);
	
}

class B extends A {
	
	
	public $attr = new C;
}

class C {
}

B::test();

?>